1. Field of the Invention
The invention relates to disk array devices, systems, and storage methods, and more particularly to such devices, systems, and methods which include a plurality of object-based storage devices (OSDs) used for constructing a RAID-type system.
2. Description of the Related Art
Recent storage systems that are used in the high-end or mid-range computer systems usually adopt Redundant Arrays of Inexpensive (a.k.a., Independent) Disks, known as RAID architecture. There are a number of different RAID architectures, with the most common being referred to as RAID1 through RAID6.
RAID 1: A RAID 1 architecture involves providing a duplicate set of “mirror” storage units and keeping a duplicate copy of all data on each pair of storage units. While such a solution solves reliability problems, it doubles the cost of storage.
RAID 2: A RAID 2 architecture stores each bit of each word of data, plus Error Detection and Correction (EDC) bits for each word, such as Hamming Code, on separate disk drives (this is also known as “bit striping”).
RAID 3: A RAID 3 architecture is based on the concept that each disk drive storage unit has internal means for detecting a fault or data error. Therefore, it is not necessary to store extra information to detect the location of an error. Instead, a simpler form of parity-based error correction can be used. In this approach, the contents of all storage units subject to failure are “Exclusive OR'd” (XOR'd) to generate parity information. The resulting parity information is stored in a single redundant storage unit. If a storage unit fails, the data on that unit can be reconstructed onto a replacement storage unit by XOR'ing the data from the remaining storage units with the parity information. However, a RAID 3 system has the same performance limitation as a RAID 2 system, in that the individual disk actuators are coupled, operating in unison. This adversely affects the random access performance of the drive array when data files are small, since only one data file at a time can be accessed by the “single” actuator. Thus, RAID 3 systems are generally not considered to be suitable for computer systems designed for On-Line Transaction Processing (OLTP) purposes, wherein the computer responds immediately to user requests, as opposed to batch processing, in which a batch of requests is stored and then executed all at one time.
RAID 4: A RAID 4 architecture uses the same parity error correction concept of the RAID 3 architecture, but improves on the performance of a RAID 3 system with respect to random reading of small files by “uncoupling” the operation of the individual disk drive actuators, and reading and writing a larger minimum amount of data (typically, a disk sector) to each disk (this is also known as block striping). A further aspect of the RAID 4 architecture is that a single storage unit is designated as the parity unit.
RAID 5: A RAID 5 architecture uses the same parity error correction concept of the RAID 4 architecture and independent actuators, but improves on the writing performance of a RAID 4 system by distributing the data and parity information across all of the available disk drives. Typically, “N+1” storage units in a set (also known as a “redundancy group”) are divided into a plurality of equally sized address areas referred to as blocks. Each storage unit generally contains the same number of blocks. Blocks from each storage unit in a redundancy group having the same unit address ranges are referred to as “stripes”. Each stripe has N blocks of data, plus one parity block on one storage unit containing parity for the remainder of the stripe. Further stripes each have a parity block, the parity blocks being distributed on different storage units. Parity updating activity associated with every modification of data in a redundancy group is therefore distributed over the different storage units. No single unit is burdened with all of the parity update activity.
RAID 6. A RAID 6 architecture calculates two sets of parity information instead of one so as to improve fault tolerance. In other words, even if there is a simultaneous failure on two drives of the array, RAID 6 can handle both faults, while RAID levels 1, 3, 4, or 5 cannot. In other words, RAID 6 includes any form of RAID that can continue to execute read and write requests to all of an array's virtual disks in the presence of two concurrent disk failures. Both dual check data computations (parity and Reed Solomon) and orthogonal dual parity check data have been proposed for RAID Level 6.
As described above, the current RAID techniques generate redundant information in bits, bytes, or blocks basis. However, RAID technology has not been effectively applied to the case where data is stored into the storage devices (such as magnetic disks) in an object base, instead of in the block base. A storage device that stores data as an object is called an OSD (Object-Based Storage Device).
Under OSD technology, each object comprises the data and its metadata or attributes. The Attributes include the size of data, user ID information, and so on. Since the Attributes maintain the size of data in the object, the object size is variable, which is different from the current storage devices such as HDDs (Hard Disk Drives).
When a RAID architecture is constructed using a plurality of OSDs, the problem arises as to how to determine the unit of parity generation. Since the parity (in the current RAID architecture) is generated from a plurality of data units having the same size, such as a bit, byte, or block, you have to consider how to prepare for the data blocks to create parity.
Prior art relating to storage systems and methods is as follows:    1) Patterson, D. A. et al., “A Case for Redundant Arrays of Inexpensive Disks (RAID)”, Proceedings ACM SIGMOD International Conference on Management of Data, 1988, 109-116;    2) U.S. Pat. No. 5,675,726: Flexible Parity Generation Circuit;    3) U.S. Pat. No. 5,148,432: Arrayed Disk Drive System and Method; and    4) ANSI T-10 Working Draft: Information Technology—SCSI Object-Based Storage Device Commands (OSD): http://www.t10.org/ftp/t10/drafts/osd/osd-r09.pdf. The entire disclosures of all four of these documents are hereby incorporated by reference.